Communication systems allow users to communicate with each other over a network. For example a user may use a user terminal (such as a mobile phone, tablet, laptop, or PC, etc.) to execute a client (or “client application”) for accessing the communication system. The client is provided (e.g. downloaded) to the user terminal by a provider of the communication system, and the client comprises software for execution at the user terminal to enable access to the communication system.
The nodes of a communication system may form an overlay network. The nodes may, for example, be clients, servers or relay nodes. An overlay network is a computer network which is built on top of another network. The nodes in the overlay network can be thought of as being connected by virtual or logical links, each of which corresponds to a path, through one or more physical links, in the underlying network. The underlying network may for example be the Internet.
When users use the communication system to engage in bi-directional communication sessions over the overlay network, data may be routed back and forth between the users' clients via a relay node in the overlay network. Relay nodes are used because not all of the nodes within a communication system may be able to communicate directly with each other, e.g. because of their firewall or Network Address Translation (NAT) settings. They can use a relay node which may have fewer restrictions in order to intermediate the communication. In this way, relay nodes are used to make communication feasible between nodes which may not be able to communicate directly with each other. The relay node may be chosen to minimize the round trip time (RTT) in the bi-directional communication session over the overlay network between the users' clients.